CSS Houdini-இன் லேஅவுட் API-இன் ஆற்றலை ஆராயுங்கள். தனிப்பயன் லேஅவுட் அல்காரிதங்களை உருவாக்குவது, வலை வடிவமைப்பு திறன்களை மேம்படுத்துவது மற்றும் இந்த புரட்சிகரமான தொழில்நுட்பத்துடன் புதுமையான பயனர் இடைமுகங்களை உருவாக்குவது எப்படி என்பதை அறியுங்கள்.
CSS Houdini லேஅவுட் API: தனிப்பயன் லேஅவுட் அல்காரிதம் மேம்பாட்டில் ஒரு ஆழமான பார்வை
இணையம் தொடர்ந்து வளர்ந்து வருகிறது, அதனுடன், வலை உருவாக்குநர்கள் மேலும் சிக்கலான மற்றும் பார்வைக்கு ஈர்க்கக்கூடிய பயனர் இடைமுகங்களை உருவாக்க வேண்டிய தேவைகளும் அதிகரித்து வருகின்றன. பாரம்பரிய CSS லேஅவுட் முறைகள் சக்திவாய்ந்ததாக இருந்தாலும், உண்மையிலேயே தனித்துவமான மற்றும் செயல்திறன் மிக்க வடிவமைப்புகளை அடைய முயற்சிக்கும்போது சில சமயங்களில் அவை கட்டுப்படுத்துவதாக உணரப்படலாம். இங்குதான் CSS Houdini-இன் லேஅவுட் API வருகிறது, இது லேஅவுட் அல்காரிதம் மேம்பாட்டிற்கு ஒரு புரட்சிகரமான அணுகுமுறையை வழங்குகிறது.
CSS Houdini என்றால் என்ன?
CSS Houdini என்பது CSS ரெண்டரிங் இன்ஜினின் பகுதிகளை உருவாக்குநர்களுக்கு வெளிப்படுத்தும் குறைந்த-நிலை API-களின் ஒரு தொகுப்பிற்கான பொதுவான சொல் ஆகும். இது வலைப் பக்கங்களின் ஸ்டைலிங் மற்றும் லேஅவுட் மீது முன்னெப்போதும் இல்லாத கட்டுப்பாட்டை அனுமதிக்கிறது. உலாவியின் உள்ளமைக்கப்பட்ட ரெண்டரிங் இன்ஜினை மட்டுமே சார்ந்திருப்பதற்குப் பதிலாக, ஹுடினி உருவாக்குநர்களுக்கு தனிப்பயன் குறியீட்டைக் கொண்டு அதை நீட்டிக்க அதிகாரம் அளிக்கிறது. இதை உலாவியின் ஸ்டைலிங் மற்றும் ரெண்டரிங் செயல்முறைக்குள் இருக்கும் "கொக்கிகள்" தொகுப்பாக நினையுங்கள்.
முக்கிய ஹுடினி API-கள் பின்வருமாறு:
- CSS பார்சர் API: CSS போன்ற தொடரியலை பாகுபடுத்தி, தனிப்பயன் பண்புகளை உருவாக்க உங்களை அனுமதிக்கிறது.
- CSS பிராப்பர்டீஸ் மற்றும் வேல்யூஸ் API: குறிப்பிட்ட வகைகள் மற்றும் நடத்தைகளுடன் தனிப்பயன் CSS பண்புகளை பதிவு செய்ய உதவுகிறது.
- டைப்டு OM (ஆப்ஜெக்ட் மாடல்): CSS பண்புகளை அணுக மற்றும் கையாள மிகவும் திறமையான மற்றும் வகை-பாதுகாப்பான வழியை வழங்குகிறது.
- பெயிண்ட் API: ஜாவாஸ்கிரிப்ட் அடிப்படையிலான ரெண்டரிங்கைப் பயன்படுத்தி தனிப்பயன் பின்னணி படங்கள், பார்டர்கள் மற்றும் பிற காட்சி விளைவுகளை வரையறுக்க உங்களை அனுமதிக்கிறது.
- அனிமேஷன் API: CSS அனிமேஷன்கள் மற்றும் மாற்றங்கள் மீது சிறந்த கட்டுப்பாட்டை வழங்குகிறது.
- லேஅவுட் API: இந்த கட்டுரையின் மையப்பொருள், இது தனிப்பயன் லேஅவுட் அல்காரிதம்களை வரையறுக்க உங்களை அனுமதிக்கிறது.
- வொர்க்லெட்டுகள்: உலாவியின் ரெண்டரிங் பைப்லைனில் இயங்கும் ஒரு இலகுரக ஜாவாஸ்கிரிப்ட் செயல்படுத்தும் சூழல். ஹுடினி API-கள் வொர்க்லெட்டுகளை பெரிதும் சார்ந்துள்ளன.
லேஅவுட் API-ஐ அறிமுகப்படுத்துதல்
லேஅவுட் API என்பது CSS ஹுடினியின் மிகவும் உற்சாகமான பகுதிகளில் ஒன்றாகும். இது உருவாக்குநர்களுக்கு ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி தங்கள் சொந்த லேஅவுட் அல்காரிதம்களை வரையறுக்க உதவுகிறது, அடிப்படையில் ஒரு பக்கத்தில் உள்ள குறிப்பிட்ட கூறுகளுக்கான உலாவியின் இயல்புநிலை லேஅவுட் இன்ஜினை மாற்றியமைக்கிறது. இது பாரம்பரிய CSS மூலம் முன்பு சாத்தியமற்றதாக அல்லது மிகவும் கடினமாக இருந்த புதுமையான மற்றும் மிகவும் தனிப்பயனாக்கப்பட்ட லேஅவுட்களை உருவாக்குவதற்கான ஒரு உலகத்தைத் திறக்கிறது.
ஒரு சுழல்வடிவில் தானாகவே கூறுகளை வரிசைப்படுத்தும் ஒரு லேஅவுட்டை உருவாக்குவதை கற்பனை செய்து பாருங்கள், அல்லது உள்ளடக்க அளவின் அடிப்படையில் மாறும் நெடுவரிசை அகலங்களுடன் ஒரு மேசன்ரி கிரிட், அல்லது ஒரு குறிப்பிட்ட தரவு காட்சிப்படுத்தலுக்கு ஏற்ப முற்றிலும் ஒரு புதிய லேஅவுட். லேஅவுட் API இந்த காட்சிகளை реальноக்குகிறது.
லேஅவுட் API-ஐ ஏன் பயன்படுத்த வேண்டும்?
லேஅவுட் API-ஐப் பயன்படுத்துவதைக் கருத்தில் கொள்ள சில முக்கிய காரணங்கள் இங்கே:
- முன்னெப்போதும் இல்லாத லேஅவுட் கட்டுப்பாடு: ஒரு கண்டெய்னருக்குள் கூறுகள் எவ்வாறு நிலைநிறுத்தப்படுகின்றன மற்றும் அளவிடப்படுகின்றன என்பதில் முழுமையான கட்டுப்பாட்டைப் பெறுங்கள்.
- செயல்திறன் மேம்படுத்தல்: உங்கள் பயன்பாட்டின் குறிப்பிட்ட தேவைகளுக்கு லேஅவுட் அல்காரிதத்தை வடிவமைப்பதன் மூலம் லேஅவுட் செயல்திறனை மேம்படுத்தலாம். எடுத்துக்காட்டாக, குறிப்பிட்ட உள்ளடக்க பண்புகளைப் பயன்படுத்தும் மேம்படுத்தல்களை நீங்கள் செயல்படுத்தலாம்.
- குறுக்கு-உலாவி நிலைத்தன்மை: ஹுடினி இந்த விவரக்குறிப்பை ஆதரிக்கும் வெவ்வேறு உலாவிகளில் ஒரு நிலையான அனுபவத்தை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது. உலாவி ஆதரவு இன்னும் வளர்ந்து வரும் நிலையில், இது மிகவும் நம்பகமான மற்றும் கணிக்கக்கூடிய லேஅவுட் சூழலின் வாக்குறுதியை வழங்குகிறது.
- கூறுபடுத்துதல் மற்றும் மறுபயன்பாடு: சிக்கலான லேஅவுட் தர்க்கத்தை திட்டங்கள் முழுவதும் எளிதாகப் பகிரக்கூடிய மறுபயன்பாட்டு கூறுகளில் இணைத்தல்.
- சோதனை மற்றும் புதுமை: வலை வடிவமைப்பின் எல்லைகளைத் தள்ளி, புதிய மற்றும் வழக்கத்திற்கு மாறான லேஅவுட் வடிவங்களை ஆராயுங்கள்.
லேஅவுட் API எவ்வாறு செயல்படுகிறது: ஒரு படிப்படியான வழிகாட்டி
லேஅவுட் API-ஐப் பயன்படுத்துவதில் பல முக்கிய படிகள் உள்ளன:
- ஒரு லேஅவுட் வொர்க்லெட்டை வரையறுக்கவும்: தனிப்பயன் லேஅவுட் அல்காரிதத்தைக் கொண்ட ஒரு ஜாவாஸ்கிரிப்ட் கோப்பை ( "லேஅவுட் வொர்க்லெட்" ) உருவாக்கவும். இந்த கோப்பு ஒரு தனி திரெட்டில் செயல்படுத்தப்படும், இது பிரதான உலாவி திரெட்டைத் தடுக்காது என்பதை உறுதி செய்கிறது.
- லேஅவுட் வொர்க்லெட்டை பதிவு செய்யவும்: உலாவியுடன் லேஅவுட் வொர்க்லெட்டைப் பதிவு செய்ய `CSS.layoutWorklet.addModule()` முறையைப் பயன்படுத்தவும். இது உங்கள் தனிப்பயன் லேஅவுட் அல்காரிதம் கிடைக்கிறது என்பதை உலாவிக்குத் தெரிவிக்கிறது.
- `layout()` செயல்பாட்டைச் செயல்படுத்தவும்: லேஅவுட் வொர்க்லெட்டிற்குள், ஒரு `layout()` செயல்பாட்டை வரையறுக்கவும். இந்த செயல்பாடு உங்கள் தனிப்பயன் லேஅவுட் அல்காரிதத்தின் இதயம். இது லேஅவுட் செய்யப்படும் உறுப்பு பற்றிய தகவல்களைப் பெறுகிறது (எ.கா., கிடைக்கும் இடம், உள்ளடக்க அளவு, தனிப்பயன் பண்புகள்) மற்றும் உறுப்பின் குழந்தைகளின் நிலை மற்றும் அளவு பற்றிய தகவல்களைத் திருப்புகிறது.
- தனிப்பயன் பண்புகளை பதிவு செய்யவும் (விரும்பினால்): உங்கள் லேஅவுட் அல்காரிதம் பயன்படுத்தும் எந்தவொரு தனிப்பயன் CSS பண்புகளையும் பதிவு செய்ய `CSS.registerProperty()` முறையைப் பயன்படுத்தவும். இது CSS ஸ்டைல்கள் மூலம் லேஅவுட்டின் நடத்தையைக் கட்டுப்படுத்த உங்களை அனுமதிக்கிறது.
- லேஅவுட்டைப் பயன்படுத்தவும்: உங்கள் தனிப்பயன் லேஅவுட் அல்காரிதத்தை ஒரு உறுப்புக்குப் பயன்படுத்த `layout:` CSS பண்பைப் பயன்படுத்தவும். பதிவு செய்யும் போது நீங்கள் லேஅவுட் அல்காரிதத்திற்கு வழங்கிய பெயரை நீங்கள் குறிப்பிடுகிறீர்கள்.
படிகளின் விரிவான முறிவு
1. ஒரு லேஅவுட் வொர்க்லெட்டை வரையறுக்கவும்
லேஅவுட் வொர்க்லெட் என்பது தனிப்பயன் லேஅவுட் அல்காரிதத்தைக் கொண்ட ஒரு ஜாவாஸ்கிரிப்ட் கோப்பு ஆகும். இது ஒரு தனி திரெட்டில் செயல்படுத்தப்படுகிறது, இது செயல்திறனுக்கு முக்கியமானது. `spiral-layout.js` என்ற ஒரு எளிய உதாரணத்தை உருவாக்குவோம்:
```javascript
// spiral-layout.js
registerLayout('spiral-layout', class {
static get inputProperties() { return ['--spiral-turns', '--spiral-growth']; }
async layout(children, edges, constraints, styleMap) {
const turnCount = parseFloat(styleMap.get('--spiral-turns').value) || 5;
const growthFactor = parseFloat(styleMap.get('--spiral-growth').value) || 20;
const childCount = children.length;
const centerX = constraints.inlineSize / 2;
const centerY = constraints.blockSize / 2;
for (let i = 0; i < childCount; i++) {
const child = children[i];
const angle = (i / childCount) * turnCount * 2 * Math.PI;
const radius = growthFactor * i;
const x = centerX + radius * Math.cos(angle) - child.inlineSize / 2;
const y = centerY + radius * Math.sin(angle) - child.blockSize / 2;
child.styleMap.set('top', y + 'px');
child.styleMap.set('left', x + 'px');
}
return { blockSizes: [constraints.blockSize] };
}
});
```
விளக்கம்:
- `registerLayout('spiral-layout', class { ... })`: இந்த வரி லேஅவுட் அல்காரிதத்தை `spiral-layout` என்ற பெயரில் பதிவு செய்கிறது. இந்த பெயரைத்தான் உங்கள் CSS-இல் பயன்படுத்துவீர்கள்.
- `static get inputProperties() { return ['--spiral-turns', '--spiral-growth']; }`: இது லேஅவுட் அல்காரிதம் பயன்படுத்தும் தனிப்பயன் CSS பண்புகளை வரையறுக்கிறது. இந்த வழக்கில், `--spiral-turns` சுழலின் திருப்பங்களின் எண்ணிக்கையைக் கட்டுப்படுத்துகிறது, மற்றும் `--spiral-growth` சுழல் எவ்வளவு வேகமாக வெளிப்புறமாக வளர்கிறது என்பதைக் கட்டுப்படுத்துகிறது.
- `async layout(children, edges, constraints, styleMap) { ... }`: இது லேஅவுட் அல்காரிதத்தின் மையப்பகுதி. இது பின்வரும் வாதங்களை எடுக்கிறது:
- `children`: `LayoutChild` பொருட்களின் ஒரு வரிசை, இது லேஅவுட் செய்யப்படும் உறுப்பின் குழந்தைகளைக் குறிக்கிறது.
- `edges`: உறுப்பின் விளிம்புகள் பற்றிய தகவல்களைக் கொண்ட ஒரு பொருள்.
- `constraints`: கிடைக்கும் இடம் பற்றிய தகவல்களைக் கொண்ட ஒரு பொருள் (எ.கா., `inlineSize` மற்றும் `blockSize`).
- `styleMap`: ஒரு `StylePropertyMapReadOnly` பொருள், இது நீங்கள் பதிவுசெய்த தனிப்பயன் பண்புகள் உட்பட CSS பண்புகளின் கணக்கிடப்பட்ட மதிப்புகளை அணுக உங்களை அனுமதிக்கிறது.
- `layout()` செயல்பாட்டிற்குள் உள்ள குறியீடு ஒவ்வொரு குழந்தையின் நிலையையும் சுழல் அல்காரிதத்தின் அடிப்படையில் கணக்கிடுகிறது. இது சுழலின் வடிவத்தைக் கட்டுப்படுத்த `turnCount` மற்றும் `growthFactor` பண்புகளைப் பயன்படுத்துகிறது.
- `child.styleMap.set('top', y + 'px'); child.styleMap.set('left', x + 'px');`: இது ஒவ்வொரு குழந்தை உறுப்பின் `top` மற்றும் `left` ஸ்டைல்களை அமைக்கிறது, திறம்பட அவற்றை சுழலுக்குள் நிலைநிறுத்துகிறது.
- `return { blockSizes: [constraints.blockSize] };`: இது உறுப்பின் பிளாக் அளவுகளைக் கொண்ட ஒரு பொருளைத் திருப்புகிறது. இந்த வழக்கில், நாங்கள் கிடைக்கும் பிளாக் அளவை வெறுமனே திருப்புகிறோம், ஆனால் தேவைப்பட்டால் நீங்கள் வெவ்வேறு பிளாக் அளவுகளைக் கணக்கிட்டுத் திருப்பலாம்.
2. லேஅவுட் வொர்க்லெட்டை பதிவு செய்யவும்
நீங்கள் தனிப்பயன் லேஅவுட்டைப் பயன்படுத்துவதற்கு முன்பு, நீங்கள் லேஅவுட் வொர்க்லெட்டை உலாவியுடன் பதிவு செய்ய வேண்டும். இதை `CSS.layoutWorklet.addModule()` முறையைப் பயன்படுத்தி செய்யலாம். இது பொதுவாக ஒரு தனி ஜாவாஸ்கிரிப்ட் கோப்பில் அல்லது உங்கள் HTML-இல் உள்ள `